package com.ftg.learn.controller;

import com.ftg.learn.domain.DemoDomain;
import com.ftg.learn.service.DemoService;
import com.ftg.learn.util.PageEx;
import com.ftg.learn.util.ToWeb;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * FS : finsh  start
 * ss 表示紧前活动
 * +8 表示开始8天以后进行其它活动
 * -8 表示开始8天以前进行其它活动
 * ff 示给紧后活动
 * fs 表示结束 开始活动
 * -- 功能划分  :
 *  -- 1. 用户表  列表功能[基础信息展示功能有、分页功能、模糊查询]  list()
 *  -- 2. 用户表  创建用户功能[接收前端给的信息、把入库]
 *  -- 3. 用户表  修改用户功能[查看原始数据（id）、修改数据]
 *  】
 *
 *  -- 4. 用户表  删除用户功能[查询还在不在、删除数据]
 * @author kangjx
 * @date 2024/1/29
 */
@RestController
@RequestMapping("/demo")
@Api(tags = "员工维护")
public class DemoController {

    //用户表sys_user(id,部门id,account,job,password,email,phone,sex,age,create_time,status)

    //1 列表(。。。用户表部门表)
    //2 添加功能（用户信息，角色信息【controller - service - 2个mapper (usermapper|userroleMapper)】）
    //3 删除功能（id）
    //4 修改功能（ 查询 id（用户表与用户角色中间表）  || 两张 用户表修改，用户角色 中间表 先删除 再添加）

    //部门表sys_dept(id,name,parent_id,create_time,status)

    //角色表sys_role(id,name,create_time,status,privilege_code)

    // 中间表 sys_userrole用户角色中间表(id,用户id,角色id)

    //菜单表sys_menu(id,name,parent_id,url,type,create_time,status)

    // 中间表 sys_rolemenu角色菜单中间表(id,角色id,菜单id))

    @Resource
    DemoService demoService;

    /**
     * 员工列表功能
     * @param name      姓名
     * @param pageNo    页码
     * @param pageSize  每页条数
     * @return   ToWeb<PageEx<DemoDomain>>
     */
    @GetMapping("/list")
    @ApiOperation("员工列表功能")
    public ToWeb<PageEx<DemoDomain>> showDemo(
            @ApiParam(name = "name",value = "姓名") @RequestParam(value = "name",required = false) String name,
            @ApiParam(name = "pageNo",value = "页码",defaultValue = "1")@RequestParam(value = "pageNo",required = false,defaultValue = "1") long pageNo,
            @ApiParam(name = "pageSize",value = "每页条数",defaultValue = "10")@RequestParam(value = "pageSize",required = false,defaultValue = "10") long pageSize
    ){
        return demoService.showDemo(name, pageNo,pageSize);
    }

    @PostMapping("/insertDemo")
    @ApiOperation("员工创建功能")
    public ToWeb<Integer> insertDemo(@RequestBody DemoDomain domain){
        int num = demoService.insertDemo(domain);
        return num > 0 ?ToWeb.success(num) : ToWeb.failure(num);
    }

    @DeleteMapping("/deleteById/{id}")
    @ApiOperation("员工删除功能")
    public ToWeb<Integer> deleteById(@PathVariable("id") Integer id){
        return demoService.deleteById(id);
    }


    @GetMapping("/findOneById/{id}")
    @ApiOperation("员工查一功能")
    public ToWeb<DemoDomain> findOneById(
           @PathVariable("id") Integer id
    ){
        return demoService.findOneById(id);
    }


    @PutMapping("/update")
    @ApiOperation("员工修改")
    public ToWeb<Integer> update(@RequestBody DemoDomain domain ){
        return demoService.update(domain);
    }


}


